/**
 * 
 */

//Variables

var marker=null;
var mapClicked;

$(window).load(function (){
	createMap();
	//Cambiar el cursor
	var myOptions = {
		draggableCursor: "crosshair"
	};
	map.setOptions(myOptions);
	//Add event listener to the click event
    mapClicked=google.maps.event.addListener(map, 'click', mapClickedListener);
});

$(document).ready(function() {
	$( "#eventDate" ).datepicker({ minDate:+1,dateFormat: 'yy-mm-dd'});
});

function validateTimeFormat(txtTimeValue) {
	var errorOccured = "";

	regularExpression = /^(\d{1,2}):(\d{2})(:00)?([ap]m)?$/;

	if (txtTimeValue != '') {
		if (arrregularExpressions = txtTimeValue.match(regularExpression)) {
			if (arrregularExpressions[4]) {
				// check for am/pm. This is 12hours time format check
				if (arrregularExpressions[1] < 1
						|| arrregularExpressions[1] > 12) {
					errorOccured = "Error: introduce horas validas. Formato 24h.";
				}
			} else {
				// This is 24hours time format check
				if (arrregularExpressions[1] > 23) {
					errorOccured = "Error: introduce horas validas. Formato 24h.";
				}
			}
			if (!errorOccured && arrregularExpressions[2] > 59) {
				errorOccured = "Introduce minutos validos "
						+ arrregularExpressions[2];
			}
		} else {
			errorOccured = "Error: introduce una hora valida. Ejemplo: 19:20 ";
		}
	} else {
		errorOccured = "Tienes que indicar una hora";
	}

	if (errorOccured != "") {
		alert(errorOccured);
		return false;
	} else {
		return true;
	}
}

function validateForm(form){
	// Funcion que comprueba que todos los campos estan bien antes de crear un
	// nuevo evento
	if(form.eventName.value==""){
		alert("Tienes que indicar un nombre");
		return false;
	}
	if(form.eventDate.value.length==0){
		alert("Tienes que indicar una fecha");
		return false;
	}
	if(!validateTimeFormat(form.eventHour.value)){
		return false;
	}
	if(form.eventDescrip.value.length==0){
		alert("Tienes que indicar una descripcion para el evento");
		return false;
	}
	if(marker==null){
		alert("Tienes que indicar una ubicacion con el mapa de la derecha");
		return false;
	}else{
		form.position.value=marker.getPosition().lat()+","+marker.getPosition().lng();
	}
	return true;
}

function drawMarker(latLng){
	//Funcion que se encarga de pintar el Marker en una Latitud y Longitud
	marker= new google.maps.Marker({
	    map:map,
	    animation: google.maps.Animation.DROP,
	    draggable: true,
	    position: latLng
	});
}

function updateMarkerPos(latLng){
	//Funcion que actualiza la posicion del marker
	//Si no existe un marker, lo creara y lo pondra en ese punto
	//Si ya existe el marker, lo movera al punto al que clickamos
	if(marker){
		marker.setPosition(latLng);
	}
	else{
		drawMarker(latLng);
	}
}

function mapClickedListener(event){
	//Funcion que salta cuando el usuario hace click en el mapa
	//y llama a updateMarkerPos();
	var latLng=new google.maps.LatLng(event.latLng.lat(),event.latLng.lng());
	updateMarkerPos(latLng);
}
var locationFound = function centerAndUpdateMarker(latLng){
	centrarMapa(latLng);
	updateMarkerPos(latLng);
}

function locationSearch(){
	//Funcion que busca una localizacion con Geocode, y luego llama a
	//updateMarkerPos();
	geocode(document.getElementById("address").value, locationFound);
	
}